PDC / VISUAL PROLOG 
ASSEMBLY LANGUAGE EXTENSIONS 
(version 1.01 / beta) 
 
 by George A. Stathis
CONTENTS
List of all the Predicates in this source-code library
Notes about using this source-code library
Author's home page (in "Geocities") 
Disclaimer
SPECIAL FEATURES   
 
DISCLAIMER:
The contents of this web site are experimental, and although a lot of care has been taken to ensure that the source-code offered here is bug-free, it can't be legally guaranteed to be without bugs (at this stage anyway). You are encouraged to download and use these programs free of charge and test them yourself, but bear in mind that most of these predicates are under continual revision and improvements, in a beta-testing phase. When this testing phase is over, the end-result may become available on a shareware basis, or on a low-priced "pay-and-download" basis from another site (not Geocities, since it's not a commercial site). The final price of this library is likely to be about $25 or $30 at a future time. This current beta-version of the library is free of charge, provided you don't sell it and you don't use it within a program which you intend to sell. If you use any of these source-code files in a program which you intend to sell, you should contact the author for beta-version registration instructions.

The planned "final commercial version" of this library is likely to include some example applications, Win95 code, and also more new PDC / Visual Prolog predicates. (Registered beta-versions 1.xx are entitled to free upgrades).


Alphabetic Index of all the ASSEMBLY LANGUAGE Source-Code files in this site:
 
  • BIN2BITS.ASM
  • BIN2STR.ASM
  • BIN_CMP.ASM
  • BOYERMOR.ASM
  • CH2STR.ASM
  • CTB256.ASM
  • CUTCHR3.ASM
  • CUTSTRCH.ASM
  • DEL_CH.ASM
  • DELDCHAR.ASM
  • DELDUPCH.ASM
  • DELMIDCS.ASM
  • HTML_SCA.ASM
  • IL_2BIN.ASM
  • IL_2IL.ASM
  • IL_ADD.ASM
  • IL_DEC.ASM
  • IL_INC.ASM
  • IL_MAX.ASM
  • IL_MEMBR.ASM
  • IL_MIN.ASM
  • IL_SETV.ASM
  • IL_SORT.ASM
  • IL_SUM.ASM
  • INIC_CNT.ASM
  • INT2BITS.ASM
  • INTO2B.ASM
  • LLEN.ASM
  • LNGMENU.ASM
  • LONGTO3B.ASM
  • LONGTO4B.ASM
  • MOVMEM.ASM
  • MOVMEMB.ASM
  • MUL_STR2.ASM
  • MULSUBST.ASM
  • NESTEXTR.ASM
  • NESTPROC.ASM
  • NUMROWC.ASM
  • P_SORT.ASM
  • P_UNIFY.ASM
  • PREFIXST.ASM
  • PSTRSCH1.ASM
  • PSTRSST1.ASM
  • REPLCH.ASM
  • REPLCHB.ASM
  • RND_FUNC.ASM
  • S_LEN.ASM
  • SDSISORT.ASM
  • SDSPREDS.ASM
  • SET_STRP.ASM
  • SIG_ADJ.ASM
  • SL_2BIN.ASM
  • SL_APPEN.ASM
  • SL_CUTM.ASM
  • SL_END.ASM
  • SL_ENDC.ASM
  • SL_HEAD.ASM
  • SL_MEMBR.ASM
  • SL_NTAIL.ASM
  • SL_REV.ASM
  • SL_SPLIT.ASM
  • SL_TOST1.ASM
  • SRCHDS.ASM
  • SRCHREV.ASM
  • STR2UINT.ASM
  • STR_CMP.ASM
  • STRCHR.ASM
  • STRSTR.ASM
  • TRIE_BIN.ASM
  • TRIML.ASM
  • TRIMR.ASM
  • TXMENU2X.ASM
  • UL_SORT.ASM
  • ULMAX.ASM
  • ULMIN.ASM
  • UMAX.ASM
  • UMIN.ASM
  • XLATFUNC.ASM
  •  

    Assembly Language Modules
    Listed by DOMAIN / CATEGORY
     
    1)  Predicates for STRINGS and BINARIES 
     
    • BIN2STR.ASM: Conversion of binaries to strings & vice-versa
    • BIN2BITS.ASM: Conversion of binaries to "bit-strings" & vice-versa
    • BIN_CMP.ASM: Ultra-fast Comparison between binaries
    • BOYERMOR.ASM: Ultra-fast Boyer-More String Search
    • CH2STR.ASM: Ultra-fast character-by-string substitution in a string
    • HTML_SCA.ASM: Converts HTML-file to Prolog-readable terms
    • DEL_CH.ASM: Ultra-fast character-deletion in a string
    • DELDCHAR.ASM: Ultra-fast duplicate-character-deletion(1) in a string
    • DELDUPCH.ASM: Ultra-fast duplicate-character-deletions(2) in a string
    • DELMIDCS.ASM: Ultra-fast substring-deletion in a string
    • MOVMEM.ASM: Ultra-fast Memory-block move function for strings
    • MOVMEMB.ASM: Ultra-fast Memory-block move function for binaries
    • MUL_STR2.ASM: Ultra-fast Multiple-String SEARCH-n-REPLACE(1)
    • MULSUBST.ASM: Ultra-fast Multiple-String SEARCH-n-REPLACE(2)
    • NESTEXTR.ASM: Extracting Nested 'parentheses' substrings in a text
    • NESTPROC.ASM: Handling of Nested 'parentheses' and similar tokens in a text
    • NUMROWC.ASM: Extracts number of rows and longest column of a text
    • PREFIXST.ASM: Multiple "prefix-string" substitutions in a text
    • PSTRSCH1.ASM: Faster substitute for 'SearchChar' (in PDC/Visual Prolog)
    • PSTRSST1.ASM: Faster substitute for 'SearchString' (in PDC/Visual Prolog)
    • REPLCH.ASM: Ultra-fast character-by-character substitution in a string
    • REPLCHB.ASM: Ultra-fast character-by-character substitution in a 'binary'
    • SDSISORT.ASM: Ultra-fast Initial-char-Sort of a "SepChar-delimited string"
    • SDSPREDS.ASM: Handling of "Separator-Character-Delimited Strings"
    • SET_STRP.ASM: Cuts a string in two halves (before/after character sought)
    • SIG_ADJ.ASM: Converts Greek texts with 'sigma' to more correct form
    • S_LEN.ASM: Ultra-fast string-length function
    2) Predicates for INTEGER-LISTS and NUMBERS 
    • IL_2BIN.ASM: converts an integer-list to a binary object & vice-versa
    • IL_2IL.ASM: converts an integer-list to an integer sub-list
    • IL_ADD.ASM: adds all elements in an integer-list
    • IL_DEC.ASM: decrements every element in an integer-list
    • IL_INC.ASM: increments every element in an integer-list
    • IL_MAX.ASM: Largest element in an integer-list
    • IL_MEMBR.ASM: Membership / Index in Integer-Lists (all flow p/tns)
    • IL_MIN.ASM: Smallest element in an integer-list
    • IL_SETV.ASM: Sets values of elements in an integer-list
    • IL_SORT.ASM: Ultra-fast Radix-sort of a signed integer List
    • IL_SUM.ASM: Sum of integer-list elements
    • LLEN.ASM: Getting the length (number of elements) of a list (multiple domains)
    • UL_SORT.ASM: Ultra-fast Radix-sort of an unsigned integer List
    • ULMAX.ASM: maximum of two unsigned Long integers
    • ULMIN.ASM: minimum of two unsigned Long integers
    • UMAX.ASM: maximum of two unsigned integers
    • UMIN.ASM: minimum of two unsigned integers
    3) STRING-LIST Handling 
    • SL_2BIN.ASM: Conversion between String-list and binary string-pointer-array
    • SL_APPEN.ASM: Fast string-list "append" function (no memory allocated)
    • SL_CUTM.ASM: Fast splitting of a string-list
    • SL_END.ASM: Fast extraction of the last element in a string-list
    • SL_ENDC.ASM: Fast extraction/splitting of the last element in a string-list
    • SL_HEAD.ASM: Fast extraction of a head of a string-list
    • SL_MEMBR.ASM: NON-DETERMINSTIC String-list membership and index
    • SL_NTAIL.ASM: Fast splitting of a string-list, extracting tail of the list
    • SL_REV.ASM: Fast reversal of a string-list
    • SL_TOST1.ASM: Conversion of string-lists to strings & vice-versa
    4) CONVERSION Predicates 
    • BIN2BITS.ASM: Conversion of binaries to "bit-strings" & vice-versa
    • BIN2STR.ASM: Conversion of binaries to strings & vice-versa
    • IL_2BIN.ASM: converts an integer-list to a binary object & vice-versa
    • IL_2IL.ASM: converts an integer-list to an integer sub-list
    • INT2BITS.ASM: converts integers to bit-strings and vice-versa
    • INTO2B.ASM: Generation of 2-byte gensym indexes for Prolog database "facts"
    • STR2UINT.ASM: Converts string of digits to unsigned integer very flexibly
    • SL_2BIN.ASM: Conversion of string-lists to binary pointer-arrays & vice-versa
    • SL_TOST1.ASM: Conversion of string-lists to strings & vice-versa
    5) Character Table Techniques 
    • UNIFY.ASM: Set of predicates for Grammatic Attribute-pattern unification etc.
    • XLATFUNC.ASM: Miscellaneous 'Character-Table/XLAT' Predicates
    • P_SORT.ASM: Ultra-fast Sorting of a 256-byte 'Character Table' etc.
    • CTB256.ASM: 256-byte Character Table for general purpose ('public') usage
    6) NON-DETERMINISTIC Predicates 
     
    • SL_MEMBR.ASM: NON-DETERMINSTIC String-list membership and index
    8) GENSYM / Database INDEX Predicates
    • LONGTO3B.ASM: Generating 3-byte gensym indexes for Prolog database "facts"
    • LONGTO4B.ASM: Generating 4-byte gensym indexes for Prolog database "facts"
    • INTO2B.ASM: Generation of 2-byte gensym indexes for Prolog database "facts"
    9) ULTRA-FAST SORTING Predicates
    • IL_SORT.ASM: Ultra-fast Integer RADIX-SORT (linear complexity, order N)
    • UL_SORT.ASM: Ultra-fast Unsigned Integer RADIX-SORT (linear complexity)
    • SDSISORT.ASM: Ultra-fast Initial-char-Sort of a "SepChar-delimited string"
    • P_SORT.ASM: Ultra-fast Sorting of a 256-byte 'Character Table' etc.
    10) RANDOM NUMBER Predicates 
    • RND_FUNC.ASM: Miscellaneous Random Number/Array Generation predicates
    11) SPECIAL COMPRESSION Predicates 
    • TRIE_BIN.ASM: Compresses Lexicographically sorted text-lines / strings
    12) Ultra-fast SEARCH & REPLACE Predicates 
    • BOYERMOR.ASM: Ultra-fast Boyer-More String Search
    • MUL_STR2.ASM: Ultra-fast Multiple-String SEARCH-n-REPLACE(1)
    • MULSUBST.ASM: Ultra-fast Multiple-String SEARCH-n-REPLACE(2)
    • NESTEXTR.ASM: Extracting Nested 'parentheses' substrings in a text
    • NESTPROC.ASM: Handling of Nested 'parentheses' and similar tokens in a text
    • NUMROWC.ASM: Extracts number of rows and longest column of a text
    • PREFIXST.ASM: Multiple "prefix-string" substitutions in a text
    • PSTRSST1.ASM: Faster substitute for 'SearchString' (in Visual Prolog)
    • PSTRSCH1.ASM: Faster substitute for 'SearchChar' (in Visual Prolog)
    • REPLCH.ASM: Fast Character-Substitution Predicate (in a string)
    • REPLCHB.ASM: Fast Character-Substitution Predicate (in a binary)
    • STRCHR.ASM: Faster Prolog-compatible substitute for 'strchr' (in 'C' compilers)
    • STRSTR.ASM: Faster Prolog-compatible substitute for 'strstr' (in 'C' compilers)
    • SRCHDS.ASM: Searching for a string inside a 'SepChar Delimited String'
    • SRCHREV.ASM: Fast REVERSE string-search (searches backwards)
    13) OId-style Text-menu Predicates (DOS) 
    • TXMENU2X.ASM: Replacement for 'menu' (PDC Prolog Toolbox)
    • LNGMENU.ASM: Faster replacement for 'Longmenu' (PDC Prolog Toolbox)
    14) Miscellaneous Text-Processing Predicates 
    • NESTEXTR.ASM: Extracting Nested 'parentheses' substrings in a text
    • NESTPROC.ASM: Handling of Nested 'parentheses' and similar tokens in a text
    • NUMROWC.ASM: Extracts number of rows and longest column of a text
    • PREFIXST.ASM: Multiple "prefix-string" substitutions in a text
    • NUMROWC.ASM: Extracts number of rows and longest column of a text
    • TRIML.ASM: Fast trimming of spaces etc. at the beginning of a string/text
    • TRIMR.ASM: Fast trimming of spaces etc. at the end of a string/text
     
    NOTES:
    1) Each of these source-code files contains a test-program (in PDC/Visual Prolog). The same file can be compiled either as an Assembly language program, or as a PDC/Visual Prolog program, depending on the user's choice of whether to keep a "commenting-out-character" (;) at the beginning of each file. 
    2) These files are in HTML-format into which they were converted automatically. In order to use them as compilable source-code files, they must be re-saved in pain text-file format, using your favourite browser's options. (All decent browsers support this conversion).
    3) The HTML-format was chosen because it allows cross-references from one file to another, using hyper-links (automatically generated), and because Geocities doesn't allow certain file-extensions in Web-sites hosted by this company. An alternative version of this library (in plain text-file format) exists in Zipped-form (ASMTESTS.ZIP), including an executable program (ASMTESTS.EXE) which enables the user to test these predicates, e.g by performing timing tests with user-defined data. Finally, you can download a zipped *.OBJ-library (ASMFUN.LIB) which contains all these predicates precompiled.
     

    Back to ASM-Library Index

    Back to George A. Stathis' home page

    There have been hits on this page since the 12th of May 1998